/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * pnfReporteMerma.java
 *
 * Created on Nov 18, 2011, 2:30:37 PM
 */

package visual.Almacenamiento;

import bentity.beAlmacen;
import bentity.beLineaMerma;
import bentity.beUsuario;
import blogic.blIncidencia;
import java.sql.Date;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import visual.Seguridad.visualHelper;



/**
 *
 * @author cesar
 */
public class pnfReporteMerma extends javax.swing.JPanel {
    public static final String VENCIMIENTO = "Vencimiento";
    public static final String INCIDENTE = "Incidente";
    public beUsuario usuario = null;

    /** Creates new form pnfReporteMerma */
    public pnfReporteMerma(beUsuario usuario) {
         initComponents();
         this.usuario = usuario;
         llenarCombo();
    }

    public void llenarCombo(){
            this.cmbMotivo.addItem(" ");
            this.cmbMotivo.addItem(VENCIMIENTO);
            this.cmbMotivo.addItem(INCIDENTE);


    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        pnlBusqueda1 = new javax.swing.JPanel();
        btnBuscar = new javax.swing.JButton();
        btnLimpiar1 = new javax.swing.JButton();
        lblCodigoPallet1 = new javax.swing.JLabel();
        lblCodigoPallet2 = new javax.swing.JLabel();
        lblFechaInscripcionDesde = new javax.swing.JLabel();
        lblFechaInscripcionHasta = new javax.swing.JLabel();
        dtcFecSalidaInicio = new com.toedter.calendar.JDateChooser();
        dtcFecSalidaFin = new com.toedter.calendar.JDateChooser();
        cmbMotivo = new javax.swing.JComboBox();
        txtProducto = new javax.swing.JTextField();
        lblTitulo = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tblSalidaProd = new javax.swing.JTable();
        lblHistorial = new javax.swing.JLabel();
        btnImprimir = new javax.swing.JButton();

        setFont(new java.awt.Font("Dialog", 0, 12));
        setLayout(null);

        pnlBusqueda1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)), "Busqueda", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 0, 14))); // NOI18N
        pnlBusqueda1.setLayout(null);

        btnBuscar.setBackground(new java.awt.Color(240, 235, 226));
        btnBuscar.setFont(new java.awt.Font("Dialog", 0, 12));
        btnBuscar.setForeground(new java.awt.Color(0, 0, 0));
        btnBuscar.setText("Buscar");
        btnBuscar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnBuscarActionPerformed(evt);
            }
        });
        pnlBusqueda1.add(btnBuscar);
        btnBuscar.setBounds(160, 130, 120, 27);

        btnLimpiar1.setBackground(new java.awt.Color(240, 235, 226));
        btnLimpiar1.setFont(new java.awt.Font("Dialog", 0, 12));
        btnLimpiar1.setForeground(new java.awt.Color(0, 0, 0));
        btnLimpiar1.setText("Limpiar");
        btnLimpiar1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnLimpiar1ActionPerformed(evt);
            }
        });
        pnlBusqueda1.add(btnLimpiar1);
        btnLimpiar1.setBounds(430, 130, 110, 27);

        lblCodigoPallet1.setFont(new java.awt.Font("Dialog", 0, 12));
        lblCodigoPallet1.setForeground(new java.awt.Color(0, 0, 0));
        lblCodigoPallet1.setText("Motivo");
        pnlBusqueda1.add(lblCodigoPallet1);
        lblCodigoPallet1.setBounds(20, 70, 60, 20);

        lblCodigoPallet2.setFont(new java.awt.Font("Dialog", 0, 12));
        lblCodigoPallet2.setForeground(new java.awt.Color(0, 0, 0));
        lblCodigoPallet2.setText("Producto");
        pnlBusqueda1.add(lblCodigoPallet2);
        lblCodigoPallet2.setBounds(20, 30, 60, 20);

        lblFechaInscripcionDesde.setFont(new java.awt.Font("Dialog", 0, 12));
        lblFechaInscripcionDesde.setForeground(new java.awt.Color(0, 0, 0));
        lblFechaInscripcionDesde.setText("Salida desde");
        pnlBusqueda1.add(lblFechaInscripcionDesde);
        lblFechaInscripcionDesde.setBounds(370, 30, 81, 15);

        lblFechaInscripcionHasta.setFont(new java.awt.Font("Dialog", 0, 12));
        lblFechaInscripcionHasta.setForeground(new java.awt.Color(0, 0, 0));
        lblFechaInscripcionHasta.setText("Salida hasta");
        pnlBusqueda1.add(lblFechaInscripcionHasta);
        lblFechaInscripcionHasta.setBounds(370, 70, 120, 15);
        pnlBusqueda1.add(dtcFecSalidaInicio);
        dtcFecSalidaInicio.setBounds(490, 20, 200, 28);
        pnlBusqueda1.add(dtcFecSalidaFin);
        dtcFecSalidaFin.setBounds(490, 60, 200, 28);
        pnlBusqueda1.add(cmbMotivo);
        cmbMotivo.setBounds(90, 60, 140, 28);

        txtProducto.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtProductoKeyTyped(evt);
            }
            public void keyPressed(java.awt.event.KeyEvent evt) {
                txtProductoKeyPressed(evt);
            }
        });
        pnlBusqueda1.add(txtProducto);
        txtProducto.setBounds(90, 20, 140, 28);

        add(pnlBusqueda1);
        pnlBusqueda1.setBounds(30, 90, 710, 180);

        lblTitulo.setFont(new java.awt.Font("Dialog", 0, 36));
        lblTitulo.setForeground(new java.awt.Color(0, 0, 0));
        lblTitulo.setText("Reporte de Merma");
        add(lblTitulo);
        lblTitulo.setBounds(200, 20, 340, 43);

        jScrollPane1.setFont(new java.awt.Font("Dialog", 0, 12));

        tblSalidaProd.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "CodPallet", "CodRack", "Coordenada", "Producto", "Cant Cajas", "Fecha", "Motivo"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tblSalidaProd.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        tblSalidaProd.getTableHeader().setReorderingAllowed(false);
        jScrollPane1.setViewportView(tblSalidaProd);

        add(jScrollPane1);
        jScrollPane1.setBounds(30, 310, 710, 190);

        lblHistorial.setFont(new java.awt.Font("Dialog", 0, 14)); // NOI18N
        lblHistorial.setForeground(new java.awt.Color(0, 0, 0));
        lblHistorial.setText("Salida de Productos");
        add(lblHistorial);
        lblHistorial.setBounds(30, 290, 160, 20);

        btnImprimir.setBackground(new java.awt.Color(240, 235, 226));
        btnImprimir.setFont(new java.awt.Font("Dialog", 0, 12));
        btnImprimir.setForeground(new java.awt.Color(0, 0, 0));
        btnImprimir.setText("Imprimir");
        btnImprimir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnImprimirActionPerformed(evt);
            }
        });
        add(btnImprimir);
        btnImprimir.setBounds(570, 520, 110, 27);
    }// </editor-fold>//GEN-END:initComponents

    private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBuscarActionPerformed
        // TODO add your handling code here:
        this.ConsultarXFiltros();

}//GEN-LAST:event_btnBuscarActionPerformed

  private void ConsultarXFiltros(){

      String Prod = this.txtProducto.getText();
      String Motivo = this.cmbMotivo.getSelectedItem().toString();
      String strSalidaDesde = "";
      String strSalidaHasta = "";
        if (this.dtcFecSalidaInicio.getDate() != null)
         strSalidaDesde = (new Date(this.dtcFecSalidaInicio.getDate().getTime())).toString();
      
        if (this.dtcFecSalidaFin.getDate() != null)
         strSalidaHasta = (new Date(this.dtcFecSalidaFin.getDate().getTime())).toString();
      ArrayList<beLineaMerma> lineaMerma = new ArrayList<beLineaMerma>();
      blIncidencia blIncidencia = new blIncidencia();
        try {
            if (((strSalidaHasta.compareTo("") == 0) && (strSalidaDesde.compareTo("") > 0)) || ((strSalidaHasta.compareTo("") > 0) && (strSalidaDesde.compareTo("")==0)))
                    visualHelper.mostrarMensajeError("Debe ingresar las dos fechas");
            else {
             lineaMerma = blIncidencia.obtenerLineaMerma(Prod, Motivo, strSalidaDesde, strSalidaHasta);
             DefaultTableModel dtm = (DefaultTableModel)this.getTblSalida().getModel();
             this.limpiarTabla(dtm);
             if (lineaMerma.size() == 0)
                JOptionPane.showMessageDialog(this, "La búsqueda no arrojó resultados.", "Información", JOptionPane.INFORMATION_MESSAGE);
             else
                this.llenarTabla(lineaMerma);
            }
        } catch (SQLException ex) {
            Logger.getLogger(pnfReporteMerma.class.getName()).log(Level.SEVERE, null, ex);
        }

      
  }
    private void llenarTabla(ArrayList<beLineaMerma> linea) throws SQLException {
        DefaultTableModel dtm = (DefaultTableModel)this.getTblSalida().getModel();
        Object [] datos = new Object [7];
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
        ArrayList<String> c = new ArrayList<String>();
        blIncidencia b = new blIncidencia();
        c = b.getCriticidad();
        for(int i=0;i<linea.size();i++){
            datos[0] = linea.get(i).getId_Pallet();
            datos[1] = linea.get(i).getId_Rack();
            String cad = "B"+linea.get(i).getCoordenada().getRack()+"-F"+linea.get(i).getCoordenada().getFila()+"-P"+linea.get(i).getCoordenada().getPiso()+"-C"+linea.get(i).getCoordenada().getUbicacion()+"";
            datos[2] = cad;
            datos[3] = linea.get(i).getProducto();
            datos[4] = linea.get(i).getCantidad();
            datos[5] = dateFormat.format(new Date(linea.get(i).getFecha().getTime()));
            datos[6] =linea.get(i).getMotivo();
            dtm.addRow(datos);
        }
        this.getTblSalida().setRowSelectionAllowed(true);
        this.getTblSalida().setColumnSelectionAllowed(false);
    }

    private void limpiarTabla(DefaultTableModel dtm) {
        int numFilas = dtm.getRowCount();
        for(int i=(numFilas-1);i>=0;i--)
            dtm.removeRow(i);
    }

    /**
     * @return the tblClientes
     */
    public javax.swing.JTable getTblSalida() {
        return tblSalidaProd;
    }

    /**
     * @param tblClientes the tblClientes to set
     */
    public void setTblIncidencia(javax.swing.JTable tblSalida) {
        this.tblSalidaProd = tblSalida;
    }


    private void btnLimpiar1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLimpiar1ActionPerformed
        // TODO add your handling code here:
        this.txtProducto.setText("");
        this.cmbMotivo.setSelectedIndex(0);
        
}//GEN-LAST:event_btnLimpiar1ActionPerformed

    private void btnImprimirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnImprimirActionPerformed
        // TODO add your handling code here:
        //(String direccionDelDocumento,String nombreDocumento, String autor, String empresa,String tituloEnElDocumento, float[] anchos,JTable tablaJava)
        try{
        JFileChooser jfc = new JFileChooser();
        int rslt = jfc.showSaveDialog(this);
        if (rslt == JFileChooser.APPROVE_OPTION){
            String strArch = jfc.getSelectedFile().getName();
            if (!strArch.trim().isEmpty()){
                String ruta = jfc.getSelectedFile().getPath().trim();
                if (!ruta.isEmpty()){
                    try{
                        beAlmacen alma = (new blogic.blHelper()).obtenerDatosAlmacen();
                        if (alma.getNombre() != null){
                            if (this.tblSalidaProd.getRowCount()>=1){
                                if (!ruta.endsWith(".pdf"))
                                    ruta += ".pdf";
                                System.out.println(this.usuario.getNombre());
                                float[] anchos = {1f,1f,1f,1f,1f,1f,1f};
                                visualHelper.crearPDF_Merma(ruta, "Reporte de Merma", this.usuario.getNombre(), alma.getNombre(), "Reporte de Merma", anchos, this.tblSalidaProd, visualHelper.obtenerFechaCalendario(this.dtcFecSalidaInicio), visualHelper.obtenerFechaCalendario(this.dtcFecSalidaFin));
                                visualHelper.mostrarMensajeSatisfaccion("Se guardó satisfactoriamente el reporte del log de auditoría en la ruta\n"+ruta);
                            }
                            else
                                visualHelper.mostrarMensajeAdvertencia("No existen registros en el historial.");
                        }
                        else
                            visualHelper.mostrarMensajeAdvertencia("No se ha ingresado información sobre el almacén.");
                    }
                    catch (Exception e){
                        e.printStackTrace();
                        visualHelper.mostrarMensajeError("Ocurrió un error al generar el reporte de merma.");
                    }
                }
                else
                    visualHelper.mostrarMensajeError("Especifique una ruta válida para guardar el archivo a imprmir.");
            }
            else
                visualHelper.mostrarMensajeError("Especifique un nombre al archivo que va a imprimir.");
        }
        }
        catch(Exception e){
            e.printStackTrace();
            visualHelper.mostrarMensajeError("Ocurrió un error durante la generación del reporte.");
        }
}//GEN-LAST:event_btnImprimirActionPerformed

    private void txtProductoKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtProductoKeyTyped
        // TODO add your handling code here:
        visualHelper.soloDigitosLetrasPuntoComaComilla(evt);
}//GEN-LAST:event_txtProductoKeyTyped

    private void txtProductoKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtProductoKeyPressed
        // TODO add your handling code here:

        visualHelper.controlarTamanho(evt,30,this.txtProducto);
    }//GEN-LAST:event_txtProductoKeyPressed


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnBuscar;
    private javax.swing.JButton btnImprimir;
    private javax.swing.JButton btnLimpiar1;
    private javax.swing.JComboBox cmbMotivo;
    private com.toedter.calendar.JDateChooser dtcFecSalidaFin;
    private com.toedter.calendar.JDateChooser dtcFecSalidaInicio;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lblCodigoPallet1;
    private javax.swing.JLabel lblCodigoPallet2;
    private javax.swing.JLabel lblFechaInscripcionDesde;
    private javax.swing.JLabel lblFechaInscripcionHasta;
    private javax.swing.JLabel lblHistorial;
    private javax.swing.JLabel lblTitulo;
    private javax.swing.JPanel pnlBusqueda1;
    private javax.swing.JTable tblSalidaProd;
    private javax.swing.JTextField txtProducto;
    // End of variables declaration//GEN-END:variables

}
